只是有一个简短的问题.我已经在互联网上看了很多,我找到了一些解决方案,但没有一个已经有效.看一下将字符串转换为int,我不是指ASCII码.
为了快速减少,我们将方程作为字符串传递.我们要将其分解,正确格式化并求解线性方程.现在,在说,我无法将字符串转换为int.
我知道字符串将采用格式(-5)或(25)等,所以它肯定是一个int.但是我们如何从字符串中提取它?
我想的一种方法是通过字符串运行for/while循环,检查一个数字,然后提取所有数字,然后查看是否有一个前导' - ',如果存在,则将int乘以 - 1.
虽然这个小问题看起来有点过于复杂.有任何想法吗?
我想制作一个程序,以字符串格式读取一些数字并输出如下:如果数字是12345,那么它应输出12 23 34 45.我尝试使用c ++字符串库中的substr()函数,但它给了我奇怪的结果 - 它输出1 23 345 45而不是预期的结果.为什么?
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main(void)
{
string a;
cin >> a;
string b;
int c;
for(int i=0;i<a.size()-1;++i)
{
b = a.substr(i,i+1);
c = atoi(b.c_str());
cout << c << " ";
}
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 当使用函数atoi(或strtol类似函数)时,如何判断整数转换是否失败或者转换的C字符串是否为0?
对于我正在做的,0是一个可接受的值,被转换的C字符串可能包含任意数量的0s.它也可能有领先的空白.
我有一段这样的代码:
int main (int argc, char *argv[])
{
printf("%d\t",(int)argv[1]);
printf("%s\t",(int)argv[1]);
}
Run Code Online (Sandbox Code Playgroud)
在shell中我这样做:
./test 7
但是第一个printf结果不是7,我怎样才能将argv []作为int?非常感谢
如何102:330:3133:76531:451:000:12:44412通过" :"字符拆分诸如" " 的字符串,并将所有数字放入一个int数组(数字序列始终为8长)最好不使用外部库,如boost.
另外,我想知道如何在处理之前从字符串中删除不需要的字符,例如"$"和"#"?
我读过它atoi()已被弃用,它相当于:
(int)strtol(token_start, (char **)NULL, 10);
Run Code Online (Sandbox Code Playgroud)
这是否意味着我应该使用上述代替atoi(chr)或仅仅是说它们是等价的?
我不明白以下C代码的结果.
main()
{
char s[] = "AAA";
advanceString(s);
}
void advanceString(p[3])
{
int val = atoi(p);
printf("The atoi val is %d\n",val);
}
Run Code Online (Sandbox Code Playgroud)
这里的atoi值显示为0,但我无法弄清楚确切的原因.根据我的理解,它应该是数组中每个值的十进制等值的总和?如果我错了,请纠正我.
我一直在尝试将char数组正确转换为long strtol,检查是否存在溢出或下溢,然后对long进行int转换.一路上,我注意到很多代码看起来像这样
if ((result == LONG_MAX || result == LONG_MIN) && errno == ERANGE)
{
// Handle the error
}
Run Code Online (Sandbox Code Playgroud)
为什么你不能只说
if(errno == ERANGE)
{
// Handle the error
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,如果发生下溢或溢出,则在两种情况下都将errno设置为ERANGE.前者真的有必要吗?可以单独检查ERANGE是否有问题?
这就是我的代码现在的样子
char *endPtr;
errno = 0;
long result = strtol(str, &endPtr, 10);
if(errno == ERANGE)
{
// Handle Error
}
else if(result > INT_MAX || result < INT_MIN)
{
// Handle Error
}
else if(endPtr == str || *endPtr != '\0')
{
// Handle Error
}
num = …Run Code Online (Sandbox Code Playgroud) 我已经使用atoi一年了,最近几天我遇到一个问题,该表达式:
atoi("20")给出一个值0作为输出。
当我用谷歌搜索这个问题时,我发现它已被弃用,strtol应该改用。
我发现有趣的一点是atoi内部使用strtol。那么,当我将其更改为 时,问题如何解决strtol?
首先,请以C ++的新手身份与我联系
最终目标是将日期以DDMMYY格式(例如“ 120319”)存储在char具有6个字节的数组中。
首先,我有一个wstring检索Unix时间戳,例如“ 155xxxxxxx”。
std::wstring businessday = L"155xxxxxxx"
Run Code Online (Sandbox Code Playgroud)
然后,将其转换为wchar_t*。
const wchar_t* wcs = businessday.c_str();
Run Code Online (Sandbox Code Playgroud)
之后,在声明10个字节的char数组之后,将转换wchar_t*为多字节字符串。
char buffer[10];
int ret;
printf ("wchar_t string: %ls \n",wcs);
ret = wcstombs ( buffer, wcs, sizeof(buffer) );
if (ret==32) buffer[31]='\0';
if (ret) printf ("multibyte string: %s \n",buffer);
Run Code Online (Sandbox Code Playgroud)
因此,现在char名为的数组buffer包含Unix时间戳格式的字符串,即“ 155xxxxxxx”。
如何char使用类似DDMMYY的日期格式(即“ 120319”)将其转换为6个字节的数组?
我正在使用标准版本的C ++(MS VC ++ 6)
long myLong = std::stol( buffer );
time_t timet = (time_t)myLong; …Run Code Online (Sandbox Code Playgroud) int main()
{
char str[10]="3.5";
printf("%lf",atof(str));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是我在ideone.com上测试的一个简单代码.我得到的输出为
-0.371627
Run Code Online (Sandbox Code Playgroud) 这是我的代码的一部分:
printf("\nEnter amount of adult tickets:");
scanf("%d", &TktAdult);
while (TktAdult<0){
printf("\nPlease enter a positive number!");
printf("\nEnter amount of adult tickets:");
scanf("%d", &TktAdult);
}
Run Code Online (Sandbox Code Playgroud)
现在它只能阻止用户输入负值,但是如何添加它以便它也阻止用户输入char?
所以我为我的C类创建了这个程序,它可以创建一个函数来告诉你字符串中某个数字位置的字符.
char charAt( char * string, int position );
int main( int argc, char * argv[ ] ) {
int pos = atoi( argv[3] );
if( strcmp( argv[1], "charAt" ) == 0 )
{
printf( "%s", charAt( argv[2], pos ) );
}
}
char charAt( char *string, int position ){
int count = 0;
while( count != position ){
string++;
count++;
}
return *string;
}
Run Code Online (Sandbox Code Playgroud)
当我编译它时,在我使用命令行运行它时没有显示错误
name charAt string 3
Run Code Online (Sandbox Code Playgroud)
它崩溃了
printf( "%s", charAt( argv[2], pos) );
Run Code Online (Sandbox Code Playgroud)
那一行为什么当我将char指针传递给printf函数时它会崩溃?