我正在尝试解析文件中的字符串,这些字符串在文件中用双引号表示。一旦找到一个字符串,便将其存储在变量中并对其进行所需的处理(就此问题而言,只需说出它的打印内容即可)。我的问题是我不知道如何获取这些字符串,尤其是当它们有空格时。
这是输入示例:
100 20
"String"
"With Space"
'c' ' '
注意:此输入中的唯一字符串是
String
和With Space
。最终应该忽略所有其他数据。这是我的代码,根本不打印任何内容。int main(int argc, char *argv[]) {
for (int i = 1; i < argc; i++) {
ifstream input;
input.open(argv[i]);
char c;
while (input.get(c)) {
if (c == '"') {
string s;
while (c != '"') {
char letter;
input.get(letter);
s += letter;
}
cout << s << "\n";
}
}
}
}
注意:我包括了iostream和fstream。我正在使用命名空间std。
最佳答案
在此片段中:
if (c == '"') {
string s;
while (c != '"') {
永远不能输入
while
循环。在测试引号末尾之前,您需要阅读下一个字符。
所以像这样:
if (c == '"') {
string s;
while (input.get(c) && c != '"') {
s += c;
}
cout << s << "\n";
}