【问题标题】:How to read multiple lines in cpp? [closed]如何在cpp中读取多行? [关闭]
【发布时间】:2023-04-09 07:25:01
【问题描述】:

我试图一次读取两行(例如:这是一行)但由于某种原因我无法同时读取这两行..:(请帮助...

int main() {
freopen("input.txt", "r", stdin);
char c, one[100], two[100];
int i = 0, t;

cin>>t;
while(t--) {

    while((c = getchar()) != '\n') {
        one[i++] = c;
    }
    one[i] = '\0';

    i = 0;
    while((c = getchar()) != '\n') {
        two[i++] = c;
    }
    two[i] = '\0';
    cout<<one<<endl;
    cout<<two<<endl;
}

}

输入:这是第一行 这是第二行 输出:这是第一行(每次迭代)..请帮助..:|

【问题讨论】:

  • std::ifstreamstd::getline
  • 你为什么在 C++ 中使用getchar。使用cplusplus.com/reference/iostream
  • @EdHead 我想使用 cin 但 cin 无法读取以空格分隔的行...:)

标签: c++ input


【解决方案1】:

你可以使用 std::getline :

int main(){
 char one[100], two[100];
 std::ifstream ifs;
 ifs.open("input.txt", std::ifstream::in);
 ifs.getline(one, 100);
 ifs.getline(two, 100);
 std::cout << one << std::endl;
 std::cout << two << std::endl;
 return 0;
}

【讨论】:

  • 谢谢你的回答......当我去它的时候你给的代码工作正常......但是当我迭代时我没有得到输出......这是我给的输入第 1 行:qwrtyuipasdfgjkzxcvbnmheol 第 2 行:虚拟!第 3 行:bfgjklmopqrstuwxzhvnicdyea 第 4 行:abcd b efgd hbi!第 5 行:qwrtyuipasdfgjkzxcvbnmheol 第 6 行:虚拟!
  • 终于解决了...我只是在读取 t 的值后额外的 getchar() ..:)
【解决方案2】:

我与输入无关,但您需要在阅读每一行之前重置i。从它的外观来看,您只是在第一行中间的某个位置附加。这是读取一行的样子(显然,如果您读取的行数多于您需要执行相同操作的行,即调用执行相同逻辑的函数):

{
    size_t i(0);
    for (int tc; i < sizeof(one) && (tc = getchar()) != EOF && tc != '\n'; ++i) {
        one[i] = tc;
    }
    one[i] = 0;
}

我还增加了两个必要条件,一个是为了避免缓冲区溢出,一个是为了处理已到达其末尾的流。当然,我不会做这样的事情,而是会使用

std::string one;
if (std::getline(std::cin, one) && std::getline(std::cin, two)) {
    std::cout << "one='" << one << "' two='" << two << "'\n";
}

【讨论】:

  • 感谢您的回复...我尝试了您的代码,但我仍然得到两个空行...:(..您介意告诉如何使用 getline 处理它...谢谢你又来了..:)
  • @user2220775:看着它,我注意到代码缺少正确的零终止。我已经更新了答案。处理数据我的意思是:对输入做任何你需要做的事情。我还更新了该部分以打印两个字符串的内容。
  • Kuhl:感谢您的努力..:)..顺便说一句,您是否介意指点我一些可以帮助我正确学习细微差别的东西..:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2019-05-16
  • 2021-06-23
  • 1970-01-01
  • 2011-10-17
  • 1970-01-01
  • 2012-05-27
相关资源
最近更新 更多