[英]How to convert string array to integer array in C++?
我有一串非均勻空格分隔的整數,我想對元素做一些算術運算,所以我決定先將字符串轉換為 integer 數組。 以下是我的方法:
string s; //let s="1 2 30 54 899 2 7 3 1";
cin>>s;
int n=s.length();
vector<int>arr(n);
for(int i=0;i<n;i++)
{
if(s[i]==' ')continue;
else{
arr.push_back(s[i]-'0');
}
}
for(int i=0;i<n;i++)
{
cout<<arr[i]<<endl; // arr should be{1,2,30,54,899,2,7,3,1};
}
這種方法有什么問題?
這種方法有什么問題?
operator>>
僅提取直到std::cin
中第一個遇到滿足std::isspace()
的字符,因此s
不可能在程序中初始化為包含空格的字符串。n
的長度應該是數組的長度。 字符數不等於空格分隔值的數量。arr
初始化為長度n
,然后使用push_back()
。 您應該默認初始化向量,使其開始為空。push_back()
每個數字作為單獨的元素。 您可以使用std::getline()
從std::cin
和std::istringstream
初始化字符串,以簡化提取格式化整數:
#include <string>
#include <iostream>
#include <sstream>
#include <vector>
int main()
{
std::string s;
std::getline(std::cin, s);
std::istringstream iss(s);
std::vector<int> arr;
for (int i; iss >> i;) {
arr.push_back(i);
}
for(auto& v : arr)
{
std::cout << v << std::endl;
}
}
您將循環所有元素並使用stoi
進行轉換。 然后將其放入 int-array 中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.