C++ 从数组复制到数组

标签 c++ transliteration

我已经尝试了很多针对这个问题的建议解决方案,但都没有成功。

我有一个长度为 1000 的 const char 数组,称为 english_line,其中包含由空格分隔的单词。这个数组被传递给一个函数。根据我们的任务简介,必须使用此功能来实现解决方案。

我想复制那个数组的内容,一次一个字到另一个二维数组,temp_eng_word

char temp_eng_word[2000][50];
int j;

string line = english_line;
string word;

istringstream iss(line, istringstream::in);
while (iss >> word)
{
for (j=0;j<=2000;j++)
 {
 strcpy(temp_eng_word[j],word);
 }
}

`

当我运行它时,出现错误:

cannot convert 'std::string* *{aka std::basic_string(char)}' to 'const char*' for argument '2' to 'char* strcpy(char*, const char*)'

我花了一天的大部分时间来尝试解决这个问题;显然我在这方面是一个相对的新手。

任何提示或建议将不胜感激:)

最佳答案

使用 word.c_str()得到 const char*来自 std::string

另外,我不明白你嵌套的意义 for循环,你可能想做这样的事情(如果需要,使用 strncpy 复制最多 49 个 char 并使用零填充,并确保字符串的最后一个 char 始终 零):

istringstream iss(line, istringstream::in);
int nWord = 0; 
while( (nWord < 2000) && (iss >> word) )
{
    strncpy(temp_eng_word[nWord], word.c_str(), 49);
    temp_eng_word[nWord][49] = '\0'; /* if it's not already zero-allocated */
    ++nWord;
}

请注意,使用 std::vector<std::string> 会更简单存储你的话:

vector<string> words;
istringstream iss(line, istringstream::in);
while(iss >> word)
{
    words.push_back(word);
}

这可以在没有循环的情况下使用 std::copy 完成:

copy(istream_iterator<string>(iss), istream_iterator<string>(), back_inserter(words));

关于C++ 从数组复制到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16414308/

相关文章:

Emacs 音译?

c++ - 通过样式表在 QMenu 中选择禁用的操作

c++ - 在 Visual Studio 中发布版本仍然更慢?

c# - c 获取像素宽度(tiff)?

c++ - 如何将 shared_ptr 作为参数传递给可变对象?

c# - 从西里尔字母到拉丁字母的音译

python - 将数据音译成印度语时 google colab(python) 出错

java - 关于字符串中的括号

Javascript charAt 在一个字符串中进行不同的音译

perl - 我可以使用 y 运算符在 Perl 中进行非一对一音译吗?