我让我的程序识别数字,但现在我想将数字从字符串a保存到字符串c。有任何想法吗?感谢。
#include <iostream>
using namespace std;
int main()
{
char a[15] = "235634sdfg123";
char b[11] = "0123456789";
char c[15];
for (int i = 0; i <= 13; i++)
{
for (int y = 0; y <= 9; y++)
{
if (a[i] == b[y])
{
cout << a[i] << "\n";
}
}
}
return 0;
}
答案 0 :(得分:2)
#include <cctype>
#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;
int main() {
auto a = "235634sdfg123"s;
auto x = std::string{};
std::copy_if(a.begin(), a.end(), std::back_inserter(x),
[](auto c) { return std::isdigit(c); });
cout << x << endl; // 235634123
}
这使用c++14
,但如果需要,可以很容易地适应旧C++
。
这使用std::string
代替char[]
因为......嗯...因为C++
。
答案 1 :(得分:1)
你的意思是以下几点吗?
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cctype>
int main()
{
char a[15] = "235634sdfg123";
char c[15];
*std::copy_if( a, a + std::strlen( a ), c,
[]( char c )
{
return std::isdigit( ( unsigned char )c );
} ) = '\0';
std::cout << a << std::endl;
std::cout << c << std::endl;
return 0;
}
输出
235634sdfg123
235634123
或者您可以使用普通循环执行相同操作。例如
#include <iostream>
#include <cctype>
int main()
{
char a[15] = "235634sdfg123";
char c[15];
char *p = a;
char *q = c;
do
{
if ( std::isdigit( ( unsigned char ) *p ) || *p == '\0' ) *q++ = *p;
} while ( *p++ );
std::cout << a << std::endl;
std::cout << c << std::endl;
return 0;
}
输出与上面相同
235634sdfg123
235634123
答案 2 :(得分:1)
这个,最简单的解决方案怎么样:
#include <iostream>
using namespace std;
#define ssize 15
int main()
{
char a[ssize] = "23d1d567d8d9";
char c[ssize];
memset(c, 0, ssize);
int j = 0;
for (int i = 0; i < ssize; i++)
{
if ('0' <= a[i] && a[i] <= '9')
{
c[j] = a[i];
j++;
}
}
cout << a << endl;
cout << c << endl;
cin.get();
cin.ignore();
return 0;
}
答案 3 :(得分:0)
递增计数器k并使用它来设置char数组c中的数据,如下所示:
#include <iostream>
using namespace std;
int main()
{
char a[] = "235634sdfg123";
char b[] = "0123456789";
char c[15];
int k = 0;
for (int i = 0; i < sizeof(a); i++)
{
for (int y = 0; y < sizeof(b); y++)
{
if (a[i] == b[y])
{
c[k] = a[i];
k++;
}
}
}
cout << c;
return 0;
}