使用cstring将字符串转换为char数组

时间:2017-01-03 09:59:46

标签: c++ c-strings

我有一个小任务,部分要求我从字符串形式的文件中获取输入并将它们放入char数组中,这样我就可以检查字符串是否包含任何'*'字符。

我已经能够成功地从文件中提取字符串,但是我没有找到将它们放在char数组中的方法,因此我可以处理它们。

如果有人让我知道如何使用cstring库将字符串放入char数组中,我将非常感激。请记住,字符串是从文件中获取的,而不是用户输入。

我试过的一些方法如下:

//Try 1
char CstringArray[] = LineFromFile;

//Try 2
char CstringArray[100] = LineFromFile;

//Try 3
ifstream Test("Test.txt");
Test>>CstringArray;

//Try 4
ifstream Test("Test.txt");
Test>>CstringArray[0];

非常感谢

1 个答案:

答案 0 :(得分:0)

由于这是一项任务,你的教授可能不会对你使用C ++的所有功能感到满意,特别是如果你不理解它,但因为它是一个单行,我想我会告诉你我是怎么做的以星号结尾打印所有string个。鉴于您已成功将文件打开到ifstream Test,您可以执行以下操作:

copy_if(istream_iterator<string>(Test), istream_iterator<string>(), ostream_iterator<string>(cout, " "), [](const auto& i) { return !empty(i) && i.back() == '*'; })

修改

  1. 我正在使用istream_iterator来阅读stringTest中的每个istream_iterator,我会立即对这些值进行操作,但如果您需要启动通过将所有string保存到vector<string>,您也可以执行此操作:vector<string> CstringArray{ istream_iterator<string>(Test), istream_iterator<string>() }
  2. 我正在使用ostream_iterator直接流式传输我选择的string而不是存储它们
  3. 我正在使用copy_if来迭代所有流入的string,只选择那些符合给定条件的<{li}>
  4. 我正在使用lambda:[](const auto& i) { return !empty(i) && i.back() == '*'; }来有条件地选择以星号字符结尾的非空字符串