在运行时,数组将被赋予值和大小

时间:2016-06-08 15:10:17

标签: c++ arrays string

我正在尝试创建一个声明一个数组(字符串)的程序,它将在运行时获得它的大小和值,用户将输入它们。 这是一个代码,但它没有给出错误:初始化程序无法确定文本的大小。

string txt;
int x;
cout << "Enter the text\n";
cin >>   txt;
char text[] = txt;
x = sizeof(text[]);
cout << x;
return 0;

这是另一个,它给出了错误:文本的存储大小是不知道的。

 char text[];
 int x;
cout << "Enter the text\n";
cin >>   text;
 x = sizeof(text[]);
cout << x;
  return 0;

3 个答案:

答案 0 :(得分:2)

更好地使用string类型。然后,您可以为该字符串调用方法size()

string txt;
int x;
cout << "Enter the text\n";
cin >>   txt;
x = txt.size();
cout << x;
return 0;

答案 1 :(得分:0)

char text[] = txt;

错了。

您无法立即将std::string类型投射到char[]阵列。

如果要访问char[]内维护的std::string数组的原始指针,请使用std::string::c_str()std::string::data()成员函数。

我实际上并不知道你使用char[]做了什么样的麻烦,但我会像这样重写你的代码:

string txt;
int x;
cout << "Enter the text\n";
cin >>   txt;
// char text[] = txt; <<<<< remove
x = txt.size(); // <<<<<< change
cout << x;
return 0;

如果还需要[const] char*类型,您可以使用我的答案第一部分中提到的功能。

答案 2 :(得分:0)

好的,我找到了它

namespaces