Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
-24 / 3 / 1
Регистрация: 05.02.2013
Сообщений: 51

Не сравниваются строки

06.02.2013, 14:54. Показов 3752. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сегодня мне понадобилось вызвать программу с аргументом команднйо строки
я посмотрел пример на
http://www.cplusplus.com/forum/beginner/35344/
и попробовал написать так же:

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
#pragma once
#include "stdafx.h"
#include "binder.h"
#include "logger.h"
#include <string>
#include <boost/lexical_cast.hpp>
using namespace std;
 
 
int main(int argc, char *argv[])
{
    if (argc!=2)
    {
        printf ( "Please, select config name: 'Pod02.exe 1' or 'Pod02.exe 2'");
        return 0;
    }
    else
    {
        printf ("%s", argv[1] );
        if ( argv[1]=="1" )
        {
          Бла бла бла;
        }
        if ( argv[1]=="2" )
        {
          Бла бла бла 2;
        }
    }
    return 0;
}
Использую Visual Studio 2010, задал при отладке подставлять "1" в качестве аргумента командной строки.
В результате: строка printf ("%s", argv[1] ); честно выводит "1".
А условие if ( argv[1]=="1" ) не выполняется, то есть до кода Бла бла бла; программа не доходит.
В чем может быть дело?

( я подозреваю, что разница в инклудах - то есть у меня работает "какой то другой оператор сравнения строк", чем в примере. Но как мне тогда добиться того же эффекта с моими инклудами? они мне нужны для кода Бла бла бла; )
Спасибо заранее.

Добавлено через 9 минут
Дополнение.
Интересно, что при помощи такого извращения
C
1
if ( boost::lexical_cast<std::string>( argv[1] )=="1")
я смог правильно сравнить строки
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.02.2013, 14:54
Ответы с готовыми решениями:

Две строки сравниваются некорректно
Всем доброго времени суток Помогите пожалуйста понять почему нижеприведенный код выдает отрицательный результат char ch =...

Плохо сравниваются строки через strcmp
Здравствуйте. Пользователей вводит минимальное кол-во матчей, которое сравнивается с данными которые в файле и выводится информация о...

Не сравниваются строки
Подскажите, как ввод с клавиатуры сравнить с &quot;zzz&quot; и выйти из цикла не хочет сравнивать string name и a? import java.util.Scanner; ...

4
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
06.02.2013, 14:55
Для сравнения строк типа char* используются функции strcmp и strncmp http://www.opennet.ru/man.shtm... &russian=0
Второй вариант - можно из них создать объекты типа std::string и использовать оператор == http://www.cplusplus.com/refer... operators/
Третий вариант - в примере значения целочисленные, и уже подключен boost::lexical_cast. Можно привести к инту и сравнивать уже числа.
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
06.02.2013, 15:05
Ниже пример как прочесть два массива переданные через параметры
Передать целый массив в качестве входных параметров для функции main()?


Не по теме:

Цитата Сообщение от SteeLHeaD Посмотреть сообщение
using namespace std;
Цитата Сообщение от SteeLHeaD Посмотреть сообщение
printf (
- после этого хочется иной раз застрелитьcя

0
74 / 74 / 10
Регистрация: 15.04.2009
Сообщений: 126
06.02.2013, 15:10
Попробуй:
C++
1
if (strcmp(argv[1], "1") == 0)
Char* нельзя так сравнивать, это не std::string, для этого есть функция strcmp(...).
0
06.02.2013, 15:34

Не по теме:

Конкретное решение без string.h

C++
1
2
3
4
5
6
7
8
9
if ( argv[1][0]=='1' )
{
// Бла бла бла;
}
else
 if ( argv[1][0]=='2' )
{
//Бла бла бла 2;
}
[/quote]

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.02.2013, 15:34
Помогаю со студенческими работами здесь

Не сравниваются равные строки
char buf = new char; try { ...

Не сравниваются строки массива
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; struct list { int regnumb; int visits; ...

Неправильно сравниваются строки
Есть две строки, 1 строка получена из инпута, вторая получена из файла test.php таким образом: file_get_contents('test.php'); Данные...

Неправильно сравниваются строки
Собственно, есть две строки, полученные из инпутов. В инпутах содержатся условные пароли - символы, цифры, буквы. У обоих gettype...

Не сравниваются строки через Contains
Допустим, что у меня есть два строковых массива. В одном массиве целое предложение. (&quot;Василий Пупкин приехал в огород&quot;), в другом...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru