لماذا لا يمكنني فهرسة ناقل STD :: في النافذة المباشرة؟
-
24-09-2019 - |
سؤال
لذلك ، لدي ناقل
std::vector<std::string> lines.
أملأ هذا المتجه ، ويمكنني الوصول إليه مثل
std::string temp = lines[0];
ومع ذلك ، في النافذة المباشرة ، كلاهما
lines[0] - error:overloaded operator not found
و
lines.at(0) - error:symbol is ambiguous
لا تعمل على الإطلاق. هل هناك خدعة لاستخدام النافذة الفورية مع C ++. أنا في الغالب قادم من خلفية C# ، حيث يعمل كل شيء بشكل جيد (ولدي Intellisense في النافذة المباشرة). لم أكن أتوقع أن تكون C ++ رائعة ، لكنني اعتقدت أنها ستعمل على الأشياء إلى جانب INTS. هل يمكن لأي شخص أن يخبرني بما أفعله خطأ؟ شكرًا.
تحرير: يجب أن أكون واضحًا ، لا شيء يعمل حقًا في النافذة المباشرة ، وهذا مجرد مثال مبسط
تحرير: أنا في وضع التصحيح
المحلول
لا تدعم Windows الفورية والمشاهدة المشغلين المحملين. هناك بعض الدعم هناك لطباعة الحاويات القياسية ككل بطريقة معقولة (انظر ، على سبيل المثال ، http://www.virtualdub.org/blog/pivot/entry.php؟id=120) ، لكن هذا لا يمتد إلى القدرة على الاستخدام operator[]
عليهم.
نأمل أن يتم تحسين هذا في المراجعات اللاحقة لتصحيح الأخطاء ، ولكن في الوقت الحالي ، أن ننظر إلى عنصر المتجه ، حاول lines._Myfirst[i]
.
(_Myfirst
, ، في المكتبات القياسية التي تأتي مع VC ++ ، يحدث أن يكون متغير العضو في أ std::vector
هذا يشير إلى العنصر الأول من التسلسل. لذلك هذا هو مجرد فحص المتجه كما لو كان أي كائن آخر. للعمل في هذا الأمر ، كان علي أن أنظر إلى الرؤوس ... ليست مريحة للغاية ، ولكن نأمل أن يساعدك ذلك. ربما يمكنك القيام بشيء مماثل مع الحاويات الأخرى ، ولكن عليك أن تنظر في الرؤوس لمعرفة كيف.)
(بالمناسبة ، إذا كنت تعمل في C#، فربما يبدو أن C ++ تصحيح الأخطاء جانب CLR.)
نصائح أخرى
في إصدارات Visual Studio الخاصة بـ NowaDay (على سبيل المثال 2013/2015) ، لم يعد متغير عضو العضو المتجه موجودًا لمتغير ناقل STD ::. استخدم _c_begin بدلاً من ذلك - يعني للمثال المحدد استخدام eg lines._c_begin [i].