C ++ char to string actky

时间:2016-08-05 20:55:15

标签: c++

这是代码:

int main(){

 string word= "word";

char ciphered[word.length()];

for(int i=0; i<word.length(); i++)
{
int current_position = (int) word[i];
int new_position = current_position + 2;
char this_char = (char) new_position;
ciphered[i] = this_char;

}



string str(ciphered);

cout << str << endl ;

}

当我运行它时会打印出来:

但是当我这样做时:

   for(int i = 0; i<sizeof(ciphered); i++)
   {
    cout << ciphered[i] << endl ;
   }

它打印出相同的东西,但没有最后三个标志,这是正确的 但每当我尝试将此char数组转换为字符串时,它会添加最后三个奇怪的符号,我不知道为什么

1 个答案:

答案 0 :(得分:3)

首先,这个:

char ciphered[word.length()];

不是合法的C ++代码,但gcc可能会接受它。但其次,您不需要真正的char数组,因为您可以使用std::string本身访问单个符号:

string word= "word";
string ciphered( word.length(), ' ' );

for(int i=0; i<word.length(); i++)
{
    ciphered[i] = word[i] + 2;
}
cout << ciphered << endl;

你的代码打印了额外的符号,因为你没有在C风格的字符串上放置null终止符并通过std::ostream发送它导致UB并在char数组之后打印内存中发生的垃圾,直到它突然发现null终结符或因访问无效内存而崩溃。