作者s58460 (小董)
看板EE_DSnP
标题[讨论] 一个假设(atof和char array)
时间Sun Nov 2 00:59:56 2008
发现喔...
使用「atof」来转换成"int"就得必须使用"char" Type的Array
(不知道还有没有其它方法?)
如果存入太多数字时
下一次atof的使用会把「这次输入的」和「输入时没覆盖到的(後面的数字)」一起转入int
比方说:
经过的第一个cin的loop输入了12345
...
charA[5] = {'1', '2', '3', '4', '5'};
intB = atof(charA);
...
这样 intB = 12345
但经过了第二个cin的lopp输入了50
...
charA[5] 会变成 {'5', '0', '3', '4', '5'};
intB = atof(charA);
...
这样 intB = 50345
跟预期的不一样...
如果在输入第二次之前用一个loop把char type的array全部重置成→'\n'
就可以解决此问题
其实我是想问在「int main」中
...
string A = "1";
int B = atof(A);
...
这样compile好像会出现错误讯息耶???
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.242.30
1F:推 timrau:int B = atof(A.c_str()); 11/02 01:03
2F:推 ric2k1:记得字串结尾要补 0 11/02 01:27
3F:推 wintercobra:string A这个动作不就自动补上'\0'了吗? 11/02 19:51
4F:推 ric2k1:Compile 错误讯息是因为如同一楼所说之原因, 11/02 20:35
5F:→ ric2k1:要加 0 char type array 才不会重复. 11/02 20:36
6F:推 wintercobra:我上网查了一下c_str()的功用,但还是不太懂 11/02 20:42
7F:→ wintercobra:他是用来在字串尾帮你补上'\0'的吗? 11/02 20:43
8F:→ wintercobra:至於那个compile error,不是string A时就加上'\0'了? 11/02 20:44
9F:→ wintercobra:那atof(A)应该没有问题呀,什麽不会重复? 11/02 20:45
10F:推 timrau:c_str()是用来生出一个const char*好让处理char*的旧func. 11/02 21:12
11F:→ timrau:使用 11/02 21:12
12F:推 wintercobra:是因为atof并不认得string,所以给他字元阵列来处理? 11/02 22:14
13F:推 ric2k1:是的 11/03 00:00