【问题标题】:getline directly to array c++, in one linegetline直接到数组c ++,一行
【发布时间】:2014-11-22 15:59:37
【问题描述】:

有没有办法将getline直接存入c char array

目前,我正在做这样的事情......

istreams.getline(name, sizeof(name));
strcpy(names[i], name);

有没有办法只用一行做,比如istreams.getline()

【问题讨论】:

  • 对不起,这是c++代码
  • istreams.getline(names[i], sizeof names[i]);
  • @0x499602D2 谢谢:)。例如,当我返回名称[-1] 时,出于兴趣,我的程序不断打印出LÁF。你知道为什么吗?
  • 因为'text'存储在names[0]之前。您不得尝试访问数组边界之外的元素。
  • 因为names[-1] 不是数组的一部分,你期望它做什么?它没有给你最后一个元素,C++ 不是 Python

标签: c++ getline arrays


【解决方案1】:

替换这两行

istreams.getline(name, sizeof(name));
strcpy(names[i], name);

为了这个

istreams.getline( names[i], sizeof(names[i]));

我想names 是一个二维字符数组。否则,如果names[i] 是一个指针,那么您必须使用其他值而不是表达式sizeof(names[i])

您也可以使用std::vector<std::string> 作为字符串的容器。

例如

while ( std::getline( istreams, name ) ) v.push_back( name );

【讨论】:

  • 谢谢,我最终设法让它工作了:)。只是出于兴趣,如果访问out of bounds,例如names[-1],返回LAF之类的随机字符是否正常?
  • @Rews Prog 您希望使用名称[-1] 得到什么?
  • @Rews Prog 您正在尝试访问不属于该阵列的内存。所以存储在这个内存中的任何东西都可以被获取,甚至程序可能会崩溃。
  • 谢谢。我输入了array bound checks,这样如果我输入-1,程序就不会崩溃,但它会不断返回一些有趣的字符,所以我认为我做错了什么。所以澄清一下,如果 out of bounds? 在 C++ 中返回有趣的字符是正常的
  • @Rews Prog 唯一的方法是编写不尝试这样做的代码。 C/C++ 不检查数组边界。
猜你喜欢
  • 2012-12-11
  • 2018-05-16
  • 2023-03-24
  • 2014-04-04
  • 1970-01-01
  • 2023-03-15
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多