不是很理解,为什么换个头文件就编译通过了

P1143 进制转换

@[fruian](/user/1102460) 我试了,不是你给出代码的错,换了头文件也能过编。求发全代码
by pyy1 @ 2024-03-07 15:11:20


@[fruian](/user/1102460) 有些版本的编译器 `string` 类在 `<iostream>` 里面是没有定义的,需要 `#include <string>`
by iterator_traits @ 2024-03-07 15:21:02


@[pyy1](/user/581316) ```cpp #include <iostream> #include <string.h> #include <map> using namespace std; map<char, int> m1 = { {'0',0}, {'1',1}, {'2',2}, {'3',3}, {'4',4}, {'5',5}, {'6',6}, {'7',7}, {'8',8}, {'9',9}, {'A',10}, {'B',11}, {'C',12}, {'D',13}, {'E',14}, {'F',15}, }; map<int, char> m2 = { {0,'0'}, {1,'1'}, {2,'2'}, {3,'3'}, {4,'4'}, {5,'5'}, {6,'6'}, {7,'7'}, {8,'8'}, {9,'9'}, {10,'A'}, {11,'B'}, {12,'C'}, {13,'D'}, {14,'E'}, {15,'F'}, }; int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int jz_1, jz_2; string num_str; cin >> jz_1 >> num_str >> jz_2; int num = 0; for (int i = 0; i < num_str.length(); i++) { num *= jz_1; num += m1[num_str[i]]; } string num_reverse; while (num != 0) { int yu = num % jz_2; num_reverse += m2[yu]; num /= jz_2; } reverse(num_reverse.begin(), num_reverse.end()); cout << num_reverse; return 0; } ``` 这个是没通过的版本
by fruian @ 2024-03-07 15:24:35


@[iterator_traits](/user/72922) 大佬,头文件 string string.h 还有cstring有什么区别
by wuwendi123 @ 2024-03-07 15:24:59


@[iterator_traits](/user/72922) 大佬,导入#include <string>也过不了 QAQ
by fruian @ 2024-03-07 15:27:18


万能头怎么你了
by Vsinger_洛天依 @ 2024-03-07 15:30:36


我知道问题出在哪了,reverse是标准算法库的算法,要导入<algorithm>库. 此贴结
by fruian @ 2024-03-07 15:31:27


@[wuwendi123](/user/784606) `<string.h>` 是C的头文件,在C++中应该可以用 `<cstring>` 代替(应该?) `<string>` 里面主要内容是 `string` 类,和另外两个是不一样的
by iterator_traits @ 2024-03-07 16:19:59


|