Turbo C++ 的字符串问题

String problems with Turbo C++

我需要在 Turbo C++ 中运行代码。但是数据类型string不起作用; 使用命名空间 std 会产生编译器错误,没有它我无法使用 string。即使 std::string 也不行。

它在 Code::Blocks 中工作得很好,但我希望它在 Turbo C++ 中工作。我知道 Turbo 是一个非常古老的编译器,我应该使用新的。但这是一个必须在 Turbo C++ 中完成的大学项目。有什么方法可以让它在 Turbo C++ 中工作吗?

这取决于您拥有的 Turbo C++ 版本。一些软件考古:

3.1 之前的古代 DOS 版本不能很好地支持 STL,也不支持 #include <string>。他们使用 pre-standard 包含扩展名为 .h 的格式:#include <string.h> 等。尝试添加 .h,你可能会很幸运。

大约在版本 4 或 5.0 左右,他们开始支持 #include <string> header 格式和大部分 STL。这些仍然是 pre-standard 编译器。

STL 支持在早期版本的 Borland Builder 中仍然存在问题,直到 Builder 5 左右。那应该是 BCC 编译器的 5.5 左右版本。

名为 Turbo C++ 的 RAD 工具于 2005 年左右发布,应该完全支持 C++98。

Turbo C++ 不支持命名空间。

我认为您需要包含 cstring.h 而不是使用任何名称空间甚至 using 指令。

#include <cstring.h>

而且我认为它也不支持模板。

绝对没有办法让现代 C++ 代码在 Turbo C++ 中按原样工作。很多都需要重写。

turbo c++ 中没有任何 std::。没有名称。没有模板。我们所知道的标准库很少。基本上,您必须忘却大部分关于 C++ 的知识。 类 并且函数主要起作用。如果您 #include <iostreams.h>(注意 .h)并省略 std::,iostreams 可能会有些工作。否则,您几乎只能使用 C 标准库。

如果您需要一个字符串 class,您可能必须自己制作一个。

仔细阅读,阅读内置帮助,检查包含的示例程序,您可能会成功。

请注意,该产品的更高版本(不称为 Turbo C++ IIRC,而是 Borland C++ 或 Borland Builder)改进了对 C++98 的支持,包括标准库。

好吧,千辛万苦找到方法了。不幸的是,您不能使用 string 和其他此类数据类型,因为它们当时甚至都没有实现。你需要做以前做过的事情。使用 char 数组而不是 string 并创建与之相关的函数。

现在 char 数组有很多限制和问题,这就是实施 string 的原因。但是你必须像从头开始编写 string 一样编写 char 数组函数。
如果要比较或复制两个 char 数组,则必须循环比较它们。它会有点复杂,但这是对我最有效的方法。

如果需要,我可以为特定任务提供一些示例代码。

您可以使用字符数组代替字符串。 例如,我们需要将变量 str 声明为字符串。可以简单地完成:

char a[10]; // the 10 is the size of the array.

包含一个单独的头文件以使用库函数。

我遇到了同样的问题然后我意识到我忘记了using namespace std那解决了一切。