anagram程序的词表转移

时间:2011-08-17 23:01:30

标签: c++ anagram

我差不多完成了我的程序,但最后一个错误是我遇到了问题。该程序应该检查大约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
 }

如果有必要,这是整个计划:

Program

2 个答案:

答案 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
}