2012-01-20 97 views
1

我有數字的在C++中的字符串:像字符串str =「1234567012」C++:如何將一個字符串對象複製到一個int數組?

  1. 我希望該複製到一個int數組,使得數組的每個元素將具有一個數字。現在我可以使用一個迭代器,並且每次迭代一個並使用static_cast<int>(*iter)。但是有沒有更簡單直接的方法?我想重新將int數組複製到字符串數組。

請幫助我以上2個步驟。

+0

誰downvoted?認爲它是一個非編程問題:-) – kingsmasher1

回答

8

可以使用std::transform功能:

std::vector<int> ints(str.size()); 
std::transform(str.begin(), str.end(), ints.begin(), 
       [](char c) { return c - '0'; }); 

如果你的編譯器不支持lambda表達式是,你可以使用常規的功能:

int get_digit(char c) { return c - '0'; } 

// ... 
std::transform(str.begin(), str.end(), ints.begin(), get_digit); 

做相反的操作,就可以做類似:

std::string s(ints.size(), 0); 
std::transform(ints.begin(), ints.end(), s.begin(), 
       [](int i) { return i + '0'; }); 
+0

啊..感謝很多。你可以幫助最後的語法:'[](char c){return c - '0'; }' – kingsmasher1

+1

這是一個lambda。它基本上是一個匿名函數。這是C++ 11中的一項新功能,它在一些編譯器中已經得到支持。我添加了一個替代品,如果你不能使用它。這兩個片段是相同的。 –

+0

Ahhh我現在明白了......謝謝一噸:) – kingsmasher1

3

類似這樣的:

std::vector<int> v; 
v.reserve(str.size()); 
for (char c : str) { v.push_back(c - '0'); } 

//... 

string s; 
for (int i : v) { s += i + '0'; } 
+0

對不起,先前的一個更好。你能幫我用for循環嗎?之前從未遇到過這種語法。 – kingsmasher1

+0

for循環中的'char c:str'是什麼意思? – kingsmasher1

+0

@ kingsmasher1:這是一個「基於範圍的語句」,可在C++ 11中找到。它看起來確實如此。 –

相關問題