在C ++中,我有一个字符串数组,比如说:
string lines[3]
lines[0] = 'abcdefg'
lines[1] = 'hijklmn'
lines[2] = 'opqrstu'
有没有办法循环遍历每个索引中的字符以及循环索引?类似于lines[i[j]]
?
答案 0 :(得分:2)
如果你有C ++ 11,你可以使用range for loop和auto:
// Example program
#include <iostream>
#include <string>
int main()
{
std::string lines[3];
lines[0]="abcdefg";
lines[1]="hijklm";
// for( auto line: lines)//using range for loop and auto here
for(int i=0; i<3; ++i)
{
std::string::iterator it= lines[i].begin();
//for ( auto &c : line[i]) //using range for loop and auto here
for(; it!= lines[i].end(); ++it)
{
std::cout<<*it;
}
std::cout<<"\n";
}
}
O / P
ABCDEFG
hijklm
答案 1 :(得分:2)
试试这段代码:
std::string lines[3];
lines[0] = "abcdefg";
lines[1] = "hijklmn";
lines[2] = "opqrstu";
for (int i=0; i < lines.length(); ++i) {
for (int j=0; j < lines[i].length(); ++j) {
std::cout << lines[i][j];
}
}
答案 2 :(得分:1)
是
#include <iostream>
#include <string>
int main() {
std::string arr[3];
arr[0] = "abcdefg";
arr[1] = "defghij";
arr[2] = "ghijklm";
for(size_t i = 0; i < 3; ++i) {
for (auto it : arr[i]) {
std::cout << it;
}
std::cout << '\n';
}
return 0;
}
使用双循环。对于每一行,迭代每个字符。
不完全允许使用双索引:arr[i,j]
或arr[i[j]]
;它必须是arr[i][j]
。
但是,如果您使用的是std::string
,则只需迭代str.length()
或只使用for (auto it : str)
,其中str = THE TYPE OF std::string
。