c++ - 读取多个字符串行,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;
}
解决方案
如果您从文件中读取,则不需要提供cin
功能getline
,您需要为文件提供流。如何获得一个示例:
#include <fstream>
std::ifstream ifs ("test.txt", std::ifstream::in);
getline(ifs, str);
这两个代码片段的区别在于您不必指定要读取的行数,while(getline)
它会读取文件直到到达文件末尾。
推荐阅读
- java - 为什么这个分词器返回不正确的值?
- android - Android (Kotlin) 为什么这个函数在得到 JSON 响应之前就退出了?
- reactjs - 由于焦点模糊更改,如何在刷新更新期间捕获反应事件?
- rust - 如何通过在 Rust 中实现 `Deref` 来返回由 `Option` 包装的引用?
- php - 如何将 JSON_ENCODE 变量放入 CURLOPT_POSTFIELDS?
- bash - 环境变量可以在 2 种不同的 shell 类型之间共享吗?
- ios - rightBarButtonItem 出现在中间
- bokeh - 如何在散景中制作插图?
- javascript - 使用 JavaScript 的“完全外连接”
- c - 如何将具有透明背景的 GdkPixbuf 复制到另一个 GdkPixbuf 上