首页 > 解决方案 > 读取多个字符串行,c++ 到多个变量;

问题描述

我正在尝试在 C++ 中读取此类输入数据;

输入:

嗨,我是约翰。你好吗?

我是

你好吗

我想将第一行存储到 s,第二行存储到 subs1,第三行存储到 subs2。

我尝试对每一行使用 getline,它不起作用。

#include <iostream>
//#include <cmath>
//#include <climits>
#include <string>

using namespace std;
int main() {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);

    string s, sub1, sub2;
    getline(cin, s);
    getline(cin, sub1);
    getline(cin, sub2);

我怎样才能做到这一点?

另外,有什么区别:

#include <iostream>
//#include <cmath>
//#include <climits>
#include <string>

using namespace std;
int main() {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int n;
    cin >> n;
    string s = "", s1;
    for (int i = 0; i < n; i++) {
        getline(cin, s1);
        s += s1;
    }
    cout << s;
    return 0;
}

和 :

#include <iostream>
//#include <cmath>
//#include <climits>
#include <string>

using namespace std;
int main() {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    int n;
    cin >> n;
    string s = "", s1;
    while (getline(cin, s1)) {
        s += s1; 
    }
    cout << s;
    return 0;
}

标签: c++

解决方案


如果您从文件中读取,则不需要提供cin功能getline,您需要为文件提供流。如何获得一个示例:

#include <fstream>

std::ifstream ifs ("test.txt", std::ifstream::in);
getline(ifs, str);

这两个代码片段的区别在于您不必指定要读取的行数,while(getline)它会读取文件直到到达文件末尾。


推荐阅读