我正在尝试解析文件中的字符串,这些字符串在文件中用双引号表示。一旦找到一个字符串,便将其存储在变量中并对其进行所需的处理(就此问题而言,只需说出它的打印内容即可)。我的问题是我不知道如何获取这些字符串,尤其是当它们有空格时。
这是输入示例:

100 20
"String"
"With Space"
'c' ' '

注意:此输入中的唯一字符串是StringWith 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";
    }

10-06 08:46
查看更多