Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于字符串大小定义数组大小_C++_String_Size - Fatal编程技术网

C++ 基于字符串大小定义数组大小

C++ 基于字符串大小定义数组大小,c++,string,size,C++,String,Size,我希望test_2的大小等于用户输入到test_1中的字符数 例如,如果用户输入“Hello”,test_2[n]将变为test_2[4] 以下代码不起作用: std::string test_1; cin >> text; int n = text.size(); std::string test_2[n]; 给我一个错误,“n”必须是一个常量。有人能告诉我如何解决这个问题吗?下面是如何获得text.size()许多空字符串的方法: std::vector<std::str

我希望test_2的大小等于用户输入到test_1中的字符数

例如,如果用户输入“Hello”,test_2[n]将变为test_2[4]

以下代码不起作用:

std::string test_1;
cin >> text;
int n = text.size();
std::string test_2[n];

给我一个错误,“n”必须是一个常量。有人能告诉我如何解决这个问题吗?

下面是如何获得
text.size()
许多空
字符串的方法:

std::vector<std::string> test_2 (n);
std::向量测试2(n);

这是在C++中获得动态大小数组的首选(唯一真正的)方法。不要使用

new[]
执行此操作。这很糟糕。非常非常糟糕。

非常感谢。还有别的办法吗?因为在使用了第一个代码之后,我将无法使用sort函数对test_2中的单词进行排序。在使用第二个代码之后,我将无法使用test_2[I]=test_1.substr(I,test_1.size()-I)@当然你可以在向量上使用这个函数。我不明白这个问题。@fovetobi代码片段做不同的事情。我列出它们是因为我不完全清楚你的意思。如果要对单词进行排序,很可能需要第一个单词。但“我如何对单词进行分类?”将是另一个问题。(这里有一个问题一个问题的规则,所以你需要开始一个新的问题)。谢谢。是的,我真的想对单词进行排序,我已经完成了,我的程序运行正常。但我已经将test_2定义为test_2[32]。但是我不想为test_2定义一个常量值(因为用户输入的字符串可能会变化),所以我打开了这个问题。@fovetobi我不知道您的代码或您的要求,但我想类似于
void mySort(std::vector&input){/*sort logic here*/}
的东西应该满足您的需要
n
在这里根本不需要是常量。如果允许的话,你应该选择自己喜欢的课程。它很可能比你的要好得多。:)但是,您发布的问题的答案位于我的答案之上,如何将其与排序函数一起使用。您能否澄清
test2
是指
n
字符串的数组,还是长度为
n
的单个字符串?那么你如何计算
4
作为
Hello
的长度呢?谢谢你的关注,马特。test_2是由n个字符串组成的数组。Hello的长度=4,基于->长度-1。因此,您实际上希望
test_2
的维度比用户输入的字符数少一个(不是您在第一行中所说的“等于”?)是的。基本上我说的equal as test_2是一个从索引0开始的数组。也许你误解了-如果数组有维度4,那么它有4个索引为0,1,2,3的条目。