Как можно было бы пойти дальше и написать части строки внутри цикла for? Допустим, у меня есть этот код:
string str[64];
for( int i = 0; i < 64; i = i + 4 )
{
cin >> str[i];
}
Каждый раз, когда он входит в цикл, я хочу написать четыре элемента строки. Как бы я пошел дальше и к этому, так как код, который я написал, не работает? :П
Спасибо 🙂
Попробуй это
for( int i = 0; i < 64; i = i + 4 )
{
for( int j = i; j < i + 4; j++ )
cin >> str[j];
}
Обратите внимание, что:
std::string str[64];
объявляет массив из 64 std::string
объекты. Если вы хотите читать со стандартного ввода за символом и заполнять этот массив строками максимальной длины 4, то это может выглядеть так:
char c;
for (int i = 0, j = 0; std::cin >> c && i < 64; ++j) {
str[i].push_back(c);
if (j == 3) {
i++;
j = 0;
}
}
Однако также подумайте о том, чтобы сделать обратное:
std::getline
)std::string::substr
разбить эту строку на маленькие строки длиной 4
std::vector
вместо массиват.е.
std::string line;
if (std::getline(std::cin, line))
{
size_t lineLen = line.length();
std::vector<std::string> tokens;
for (int i = 0; i < lineLen; i = i + 4)
tokens.push_back(line.substr(i,4));
for (size_t i = 0; i < tokens.size(); ++i)
std::cout << tokens[i] << ", ";
}
Вы также можете рассмотреть вопрос о звонке tokens.reserve(len/4 + 1);
после tokens
вектор создан для предотвращения избыточного перераспределения памяти. И не забудьте #include <vector>
,