我正在尝试解析文件中的字符串,文件中用双引号表示。一旦我找到一个字符串,我就会将它存储在一个变量中,然后用它做我想做的事(为了这个问题的目的,我只想说打印它)。我的问题是我无法弄清楚如何获取这些字符串,特别是如果它们有空格。 以下是输入的示例:
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。我正在使用命名空间标准。
答案 0 :(得分:1)
在这个片段中:
if (c == '"') {
string s;
while (c != '"') {
永远不能输入while
循环。
在测试引用字符串的结尾之前,您需要阅读下一个字符。
这样的事情:
if (c == '"') {
string s;
while (input.get(c) && c != '"') {
s += c;
}
cout << s << "\n";
}