gpt4 book ai didi

C++ 在 Unix 编译器上清理字符串中的 Windows 换行元素

转载 作者:行者123 更新时间:2023-11-28 06:10:28 24 4
gpt4 key购买 nike

我正在使用 Unix shell 编译器,需要导入 Windows .dat 文件进行输入。不幸的是,这意味着输入文件中存在用于回车的 native “\r\n”组件。

我希望通过以下方式消除这些问题:

#include <fstream>
#include <string>

using namespace std;

int main()
{
ifstream inputFile;
inputFile.open("myFile.dat");

string array[100];
int i = 0;

while(getline(dataIn, str))
{
str.erase(remove(str.begin(), str.end(), '\n'), str.end());
str.erase(remove(str.begin(), str.end(), '\r'), str.end());
array[0] = str;
i++;
}
return 1;
}

然而,这提供了以下错误:

error: cannot convert ‘__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >’ to ‘const char*’ for argument ‘1’ to ‘int remove(const char*)’

对于第一个erase(),然后是

error: request for member ‘erase’ in ‘temp.std::basic_string<_CharT, _Traits, _Alloc>::c_str [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]()’, which is of non-class type ‘const char*’

第二次。

我尝试了 str.c_str().erase 但这导致了第二个错误的重复。任何建议将不胜感激...

最佳答案

代码中的两个问题:

  1. 你是否想使用算法函数remove , 你需要添加 #include <algorithm> .
  2. 确保::remove (这是一个删除由 char * 参数命名的文件的函数)没有被拾取,使用 std::remove .

关于C++ 在 Unix 编译器上清理字符串中的 Windows 换行元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31370440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com