读取多个字符串行,c++ 读取多个变量;

Reading multiple string lines, c++ to multiple variables;

本文关键字:读取 变量 c++ 字符串      更新时间:2023-10-16

>我正在尝试用 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;
}

如果您从文件读取,则不需要为getline函数提供cin,您需要提供文件的流。如何获得的示例:

#include <fstream>
std::ifstream ifs ("test.txt", std::ifstream::in);
getline(ifs, str);

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