我差不多完成了我的程序,但最后一个错误是我遇到了问题。该程序应该检查大约10个扰乱单词列表,以查看扰乱的单词是什么字谜。为此,我将词典中的每个单词按字母顺序排列(苹果将成为aelpp),将其设置为地图的键,并使相应的条目成为原始的,未经过字母化的单词。
当涉及到地图中的条目时,该程序正在搞乱。当条目为六个字符或更少时,程序在字符串的末尾标记一个随机字符。我已经将导致问题的原因缩小到一个循环:
while(myFile){
myFile.getline(str, 30);
int h=0;
for (; str[h] != 0; h++)//setting the initial version of str
{
strInit[h]=str[h]; //strInit is what becomes the entry into the map.
}
strInit[h+1]='\0'; //I didn't know if the for loop would include the null char
cout<<strInit; //Personal error-checking; not necessary for the program
}
如果有必要,这是整个计划:
答案 0 :(得分:1)
预防问题,使用正常功能:
getline(str, 30);
strncpy(strInit, str, 30);
防止出现更多问题,请使用标准字符串:
std::string strInit, str;
while (std::getline(myFile, str)) {
strInit = str;
// do stuff
}
答案 1 :(得分:0)
最好不要使用原始C数组!这是一个使用现代C ++的版本:
#include <string>
std::string str;
while (std::getline(myFile, str))
{
// do something useful with str
// Example: mymap[str] = f(str);
std::cout << str; //Personal error-checking; not necessary for the program
}