C++如何把一個字符串分割到字符串數組里呢?
為了讓讀者輕松了解,我們用一個for循環來實現,不借助strtok()以及其他函數;(先上代碼)
#include <iostream>
#include <string>
using namespace std;
string w,k[1000002];
int main() {
getline(cin, w); //首先輸入一個字符串
int s = 0;
for (int i = 0; i < w.length(); i++) { //將字符串分割成字符串數組
if (w[i] == ' ') { //以空格作為分隔符
s++;
continue;
}
k[s] += w[i]; //將分割好的字符串放到K數組里
}
for(int i = 0;i<=s;i++){ //輸出分割好的字符串
cout<<k[i]<<endl;
}
system("pause");
return 0;
}
getline()這個函數是輸入整行字符串以\n結束,也就是以回車結束;
我們需要聲明一個足夠大的字符串數組來存放分割后的數據,在這里我以數組k舉例;
s代表一共分割成了幾個字符串到數組,這里注意s是以0開始,我們可以用s作為k數組的邊界;
原理是把字符串每一個字符都遍歷一遍,並儲存到字符串數組,如果遇到分隔符就將數組下標加一,並跳出此次循環,不保存字符到數組;
我們來舉個例子,如果我輸入了字符串"159 357 159 357",程序將輸出:
159
357
159
357