2015-02-18 4 views
0

Я хочу, чтобы размер 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]; 

дает мне ошибку, что «п» должен быть постоянной величиной. Может кто-нибудь, пожалуйста, скажите мне, как это исправить?

+1

Вы можете уточнить, является ли 'test2' предназначенным для массива строк' n' или одной строки с длиной 'n'? И как вы вычисляете '4' как длину' Hello'? –

+0

Благодарим вас за внимание, Мэтт. test_2 предназначен для массива из n строк. Длина Hello = 4 на основе -> length - 1. – fovetobi

+0

Итак, вы действительно хотите, чтобы размер 'test_2' был на один меньше числа символов, введенных пользователем (а не« равно », как вы сказали в первой строке)? –

ответ

2

Вот как вы можете получить text.size() много пустой strings:

std::vector<std::string> test_2 (n); 

Это предпочтительный (только реальный) способ получить динамически размера массива в C++. Не делайте этого с new[]. Это плохо. Действительно, очень плохо.

+0

Большое спасибо. Есть ли другой способ сделать это? Потому что после использования этого первого кода я не смогу использовать функцию сортировки для сортировки слов в test_2. И после использования второго кода я не смогу использовать test_2 [i] = test_1.substr (i, test_1.size() - i); – fovetobi

+0

@fovetobi Конечно, вы можете использовать функцию [sort] (http://en.cppreference.com/w/cpp/algorithm/sort) на векторах. Я не понимаю эту проблему. –

+1

@fovetobi Кусочки кода делают разные вещи. Я перечислил их, потому что мне было не совсем понятно, что вы имели в виду. Если вы хотите сортировать слова, вам, скорее всего, нужен первый. Но * «Как я могу сортировать слова?» * Был бы другим вопросом. (В SO существует один вопрос для каждого вопроса, поэтому вам нужно будет начать новый). –

Смежные вопросы