Меню

Ошибка unknown type name string

I’m working on a C++ header file and I keep getting the error «Unknown type name ‘string’; did you mean ‘std::string’?» #include <string> is already at the top of my code, so I’m not sure how else to remedy this issue. Any thoughts? I’m using Xcode, if that makes any difference.

#ifndef POINT_HPP
#define POINT_HPP
#include <string>
using namespace std;

class Point {
public:
    Point();
    Point(int pInitX, int pInitY);
    Point(int pInitX, int pInitY, int pInitColor);
    double distance(Point pAnotherPoint);
    int getColor();
    int getX();
    int getY();
    void move(int pNewX, int pNewY);
    void setColor(int pNewColor);
    void setX(int pNewX);
    void setY(int pNewY);
    string toString; // Error: Unknown type name 'string'; did you mean 'std::string'?
private:
    void init(int pInitX, int pInitY, int pInitColor);
    int mColor;
    int mX;
    int mY;
};

#endif

asked Apr 3, 2016 at 1:52

m-use's user avatar

5

you must use std::string toString()or declare using namespace std;globally

answered Apr 3, 2016 at 2:53

Daniel's user avatar

DanielDaniel

661 silver badge9 bronze badges

Make sure to also set the path to the Point class (header and cpp) inside CMakeLists.txt.

If you are using QT, it should be something like

set(PROJECT_SOURCES
        ...
        point.cpp
        point.h
)

After that you need to import the string class at the top like this #include <string> and then declare using namespace std;

answered Oct 18, 2021 at 10:06

Ahmad Khudeish's user avatar

I’m new to C++ and have had some help with my program to compare two XML files. This is the code I have:

#include "pugixml.hpp"

#include <iostream>
#include <unordered_map>

int main() {
    pugi::xml_document doca, docb;
    std::map<string, pugi::xml_node> mapa, mapb;

    if (!doca.load_file("a.xml") || !docb.load_file("b.xml"))
        return 1;

    for (auto& node: doca.child("site_entries").children("entry")) {
        const char* id = node.child_value("id");
        mapa[new std::string(id, strlen(id))] = node;
    }

    for (auto& node: docb.child("site_entries").children("entry"))
        const char* idcs = node.child_value("id");
        std::string id = new std::string(idcs, strlen(idcs));
        if (!mapa.erase(id)) {
            mapb[id] = node;
        }
    }

}

I seem to get a lot of errors when I try and compile it.

The first one I get is this:

src/main.cpp:10:14: error: unknown type name 'string'; did you mean 'std::string'?
    std::map<string, pugi::xml_node> mapa, mapb;
        ~~~~~^~~

From what I understand, I have specified it correctly. Should I change it as it requests or is something else a-miss?

Forum

  • Beginners
  • Windows Programming
  • UNIX/Linux Programming
  • General C++ Programming
  • Lounge
  • Jobs
  • Forum
  • Beginners
  • Unknown type name ‘string’

Unknown type name ‘string’

I’m trying to compile my code .cpp but even though I include the libraries I get those errors:

error: unknown type name
‘string’
static string* split(string s);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "../../include/kingsort/KingSort.h"
#include <iostream>
#include <string>
using namespace std;


string* KingSort::split(string s) {
    string* arr = new string[2];
    stringstream X(s);
    unsigned int i = 0;
    while (getline(X,arr[i], ' ')) {
        i++;
    }
    return arr;
}

For instance, the MakeFile is as follows:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))

SOURCE_FILES = $(call rwildcard, , *.cpp)
OBJECT_FILES = $(SOURCE_FILES:.cpp=.o)

all: build build/main clean_objects

build:
	mkdir -p build

build/main: $(OBJECT_FILES)
	g++ -g $^ -std=c++11 -o $@

%.o: %.cpp
	g++ -g -std=c++11 -c $^ -o $@

clean_objects: $(OBJECT_FILES)
	rm $^

Why am I getting those errors? Thanks!

Did you include <string> in KingSort.h?

Oh I didn’t! Thanks!

Topic archived. No new replies allowed.

operkor

0 / 0 / 0

Регистрация: 27.11.2021

Сообщений: 76

1

09.04.2022, 23:27. Показов 1454. Ответов 7

Метки c++ 1курс, c++ builder (Все метки)


Все библиотеки вроде подключены, я не понимаю, почему при компиляции получаю такие ошибки:
[bcc32c Error] Unit7.cpp(39): unknown type name ‘string’
[bcc32c Error] Unit7.cpp(40): unknown type name ‘string’
[bcc32c Error] Unit7.cpp(67): call to ‘IntToStr’ is ambiguous
System.SysUtils.hpp(3236): candidate function
System.SysUtils.hpp(3237): candidate function
[bcc32c Error] Unit7.cpp(67): call to ‘IntToStr’ is ambiguous
System.SysUtils.hpp(3236): candidate function
System.SysUtils.hpp(3237): candidate function

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//---------------------------------------------------------------------------
 
#include <vcl.h>
#include <string>
#include <string.h>
#include <cstring>
#include <cstddef>
 
#pragma hdrstop
 
#include "Unit7.h"
int Number, UserNumber;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm7 *Form7;
//---------------------------------------------------------------------------
 
__fastcall TForm7::TForm7(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm7::Button1Click(TObject *Sender)
{
Number = 1000 + rand() %(9999-1000+1);
}
//---------------------------------------------------------------------------
void __fastcall TForm7::Button2Click(TObject *Sender)
{
String corral;
size_t cows, bulls;
UserNumber=StrToInt(LabeledEdit1->Text);
while (1)
{
if (Number == UserNumber)
Memo1->Lines->Add(IntToStr(UserNumber) + " Браво! Вы угадали число с первого раза!");
cows = bulls = 0;
string Number = to_string(Number);
string UserNumber = to_string(UserNumber);
for(size_t i {0}; i<Number.size(); i++)
{
 if (Number[i] == UserNumber[i])
 {
     corral[i] = 'C';
     cows++;
 }
 else corral[i] = 0;
}
for (size_t i {0}; i<Number.size(); i++)
{
    if (corral[i] == 'C')
    continue;
    for (size_t j {0}; j<Number.size(); j++)
    {
        if (corral[j] == 'C' || corral [j] == 'B')
        continue;
 
        if (Number[i] == UserNumber[j])
        corral[j] = 'C';
        bulls++;
        break;
    }
}
}
Memo1->Lines->Add("Ваше число " + IntToStr(UserNumber) + ".");
Memo1->Lines->Add("Количество быков и коров составляет: " + IntToStr(bulls) + IntToStr(cows);
}
 
//---------------------------------------------------------------------------

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Алексей1153

фрилансер

4430 / 3941 / 858

Регистрация: 11.10.2019

Сообщений: 10,417

09.04.2022, 23:48

2

operkor,

C++
1
std::string Number = std::to_string(Number);

Добавлено через 1 минуту
я бы ещё линейкой по рукам за одинаковое имя локальной и глобальное переменной



1



0 / 0 / 0

Регистрация: 27.11.2021

Сообщений: 76

10.04.2022, 00:00

 [ТС]

3

Алексей1153, Упс, не заметил это, ошибки ушли, но проблема с мемо всё ещё осталась.



0



Модератор

8221 / 5459 / 2244

Регистрация: 21.01.2014

Сообщений: 23,492

Записей в блоге: 3

10.04.2022, 05:01

4

Я бы не использовал с C++ Builder типы данных из C++, в частности — std::string.
Да и вообще — Вы смешиваете ужа и ежа: решать задачу, слепляя VCL и STL — это надо понимать, что Вы делаете, чего, однако, не наблюдается…

Задачу можете озвучить?



0



0 / 0 / 0

Регистрация: 27.11.2021

Сообщений: 76

10.04.2022, 09:59

 [ТС]

5

D1973, Игра быки и коровы. Компьютер загадывает 4 значное число, я же, в свою очередь, отгадываю. Если цифра есть в загаданное числе, но не на своём месте, то я получаю «корову», если же цифра есть и на своём месте, то «быка».
Да и как реализовать эту игру по другому без слепливания VCL и STL, ибо идей у меня больше нет.



0



Модератор

8221 / 5459 / 2244

Регистрация: 21.01.2014

Сообщений: 23,492

Записей в блоге: 3

10.04.2022, 14:56

6

operkor, а версия билдера какая?



0



Модератор

8221 / 5459 / 2244

Регистрация: 21.01.2014

Сообщений: 23,492

Записей в блоге: 3

10.04.2022, 16:35

7

Лучший ответ Сообщение было отмечено operkor как решение

Решение

Ну раз ответа нет — вот вариант для RAD Studio 10.4, на другие версии при необходимости сами переделывайте, ничего специфического там нет, все стандартно.

Миниатюры

Ошибка с string и memo
 



2



0 / 0 / 0

Регистрация: 27.11.2021

Сообщений: 76

10.04.2022, 18:00

 [ТС]

8

D1973, Спасибо большое! Я как раз работаю в Rad Studio 10.4.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.04.2022, 18:00

Помогаю со студенческими работами здесь

Ошибка при присвоении argv[1] переменной string. Как конвертировать к типу string?
&quot;call of an object of a class type without appropriate operator() or conversion functions to…

SaveDialog: записать в файл все строки из Memo + какие-либо string переменные
Как записать в сохраняемый файл (через SaveDialog) все строки из Memo + какие-либо string…

Ошибка в типе данных ‘String’ and ‘System::String’
Всем привет.
помогите, выдает ошибку
File1.cpp(40): E2015 Ambiguity between ‘String’ and…

ComboBox. Как разделить строку, чтобы часть слов вводилась в Memo, а остальное переменную String ?
Как разделить выбранную строку ComboBox, чтобы часть слов вводилась в Memo, а остальное в…

Нельзя преобразовать тип Tuple<string,string,string,string> к string
Здравствуйте, у меня возникла проблема. При запуске кода, вылезает ошибка &quot;Нельзя преобразовать тип…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

8

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка unknown software exception 0xc80000003
  • Ошибка unknown software exception 0xc0000096