【发布时间】:2017-04-13 23:18:30
【问题描述】:
我尝试使用以下代码反转字符串,但得到一个永无止境的小方框输出。 (每行 1 个)
代码:
#include <iostream>
#include <math.h>
#include <iomanip>
#include <sstream>
int main() {
// Reversing A String
cout<<"welcome to string reverser"<<endl;
int sizeOfString;
cout<<"please input size of string"<<endl;
cin>>sizeOfString;
char charray3[sizeOfString];
cin>>charray3;
for(unsigned int i=sizeOfString-1; i>=0; i--){
cout<<charray3[i]<<endl;
}
return 0;
}
在我的尝试中,我将 sizeOfString 设置为 3 并将 charray3 设置为 'abc'。
输出:
我做错了什么?
【问题讨论】:
-
在调试器中单步执行此代码时会发生什么?
-
sizeOfString应该是字符串在内存中占用的字节数还是其中的字符数?你说你将“abc”设置为sizeOfString3,暗示它是其中有效字符的数量,但是你用它作为数组的大小来分配,暗示它是内存大小。 (如果你不明白为什么不能两者兼而有之,那你就是不了解 C 风格的字符串。) -
仅供参考,当
sizeOfString不是常量表达式时,char charray3[sizeOfString];不是标准 C++。 -
它是 C++,然后使用
std::string,而不是 char 数组。 -
我知道您可以使用 char 数组定义字符串,如下所示:char array[]="hello";。传递 int 表示 char 的大小是有效的。